using UnityEngine;

namespace Utils
{
    public static class MoveUtil
    {
        /// <summary>
        /// 将源物体平滑移动到目标物体所在的位置（该方法目前有bug，需要修复）
        /// </summary>
        /// <param name="source">需要移动的源物体</param>
        /// <param name="target">目标物体，源物体将移动到该物体所在位置</param>
        /// <param name="speed">移动的速度，数值越大移动越快，默认为5s移动到目标位置</param>
        public static void Move(GameObject source, GameObject target, float speed = 3f)
        {
            if (source == null || target == null)
            {
                Debug.LogError("源物体或目标物体为空，无法进行移动操作");
                return;
            }

            // 计算目标位置
            Vector3 targetPosition = target.transform.position;
            // 使用 Lerp 方法实现平滑移动
            source.transform.position = Vector3.Lerp(source.transform.position, targetPosition, speed * Time.deltaTime);
        }

        /// <summary>
        /// 将源物体的position设置在目标物体的position的上方0.01个单位长度处
        /// </summary>
        /// <param name="source">需要移动的物体</param>
        /// <param name="target">目标物体，源物体将移动到该物体所在位置</param>
        public static void SimpleMove(GameObject source , GameObject target)
        {
            Vector3 position = target.transform.position;
            position.z = (float)(position.z - 0.01);
            source.transform.position = position;
        }
    }
}